package com.humngyang.com.hmy.study.concurrency.myannoations.pushObject;

import com.humngyang.com.hmy.study.concurrency.myannoations.Recommend;
import com.humngyang.com.hmy.study.concurrency.myannoations.ThreadSafe;


//使用枚举来构造单例对象
@Recommend
@ThreadSafe
public class SingletonExample6 {
    //构造方法私有化,不允许外面的方法直接调用
    private SingletonExample6() {
    }

    //定义一个单例对象
    private static SingletonExample6 getinstance(){
        return Singleton.INSTANCE.getinstance();
    }

    private enum Singleton{
        INSTANCE;
        private SingletonExample6 singleton;

        //构造函数 JVM保证这个方法只会被调用一次。
        Singleton(){
            singleton = new SingletonExample6();
        }

        public SingletonExample6 getinstance(){
            return singleton;
        }
    }

}
